// see http://vuejs-templates.github.io/webpack for documentation.
let path = require('path');
let webpack = require('webpack');

const env = process.env.NODE_ENV;
// 打印配置项
console.log('[环境]')
console.log(env)

// 设定项目
let project = process.env.PROJECT;
// 设定配置文件
let proEnv = require(project ? './config/pro.env.' + project : './config/pro.env'); // 生产环境
let uatEnv = require(project ? './config/uat.env.' + project : './config/uat.env'); // 测试环境
let devEnv = require(project ? './config/dev.env.' + project : './config/dev.env'); // 本地环境
// 默认是本地环境
let envConfig = devEnv;

// 其他环境的话覆盖配置项
if (env === 'production') {
	// 生产环境
	Object.keys(proEnv).forEach(function(key) {
		envConfig[key] = proEnv[key]
	});
} else if (env === 'test') {
	// 测试环境
	Object.keys(uatEnv).forEach(function(key) {
		envConfig[key] = uatEnv[key]
	});
}


// 打印配置项
console.log('[项目]')
console.log(project)
console.log('[项目配置]')
console.log(envConfig)

// 生成代理配置对象
const devProxy = [envConfig.hosturl]; // 代理
let proxyObj = {};
devProxy.forEach((value, index) => {
	proxyObj[value] = {
        ws: false,
		target: envConfig.proxyurl,
		changeOrigin: true,
		pathRewrite: {
			[`^${value}`]: value
		}
	};
});

// 定义全局变量
let globalVariable = {
	// 判断是否为开发环境
	PRODUCTION: env === 'production' ? true : false
}
Object.keys(envConfig).forEach(function(key) {
	globalVariable[key] = JSON.stringify(envConfig[key])
});
module.exports = {
	// 全局变量
	configureWebpack: {
		plugins: [
			new webpack.DefinePlugin({ ENV: globalVariable })
		]
	},
	// 将部署应用程序的基本URL
	baseUrl: env === 'production' ? envConfig.baseUrl : '/',
	// static文件输出路径
	outputDir: envConfig.outputDir,
	// 使用带有浏览器内编译器的完整构建版本 // https://vuejs.org/v2/guide/installation.html#Runtime-Compiler-vs-Runtime-only
	lintOnSave: true,

	// webpack-dev-server 相关配置
	devServer: {
		// open: process.platform === 'darwin',
		host: '0.0.0.0',
		port: 8080,
		https: false,
		hotOnly: false,
		proxy: proxyObj,
		before: app => {}
	},
};
